// // // // 两种方法拿到fn中a的值
// // // function fn () {
// // //     const a = 1;
// // //     return a;
// // // }

// // // const value = fn(); // 1

// // // // 回调函数
// // // function fn (callback) {
// // //     const a = 1;
// // //     callback(a);
// // // }

// // // fn(function (value) {
// // //     console.log(value); // 1
// // // });

// // // // 返回子作用域函数
// // // // 防抖节流..
// // // function fn () {
// // //     const a = 1;
// // //     const b = 1;
// // //     const c = 1;
// // //     return function () {
// // //         console.log(a);
// // //         console.log(b);
// // //         console.log(c);
// // //     };
// // // }

// // // const childFn = fn();
// // // childFn(); // 1

// // function f1 () {
// //     console.log(a); // 1
// // }

// // function f2 () {
// //     const a = 1;
// //     return function () {
// //         console.log(a); // 1
// //     };
// // }

// // // f1(); // Error: a is not defined
// // // const f11 = f2();
// // // f11();

// const tree = {
//     name: 'a1',
//     children: [
//         {
//             name: 'aa1',
//             children: [
//                 {
//                     name: 'aaa1',
//                     children: [],
//                 },
//                 {
//                     name: 'aaa2',
//                     children: [
//                         {
//                             name: 'aaaa1',
//                             children: [],
//                         },
//                     ],
//                 },
//             ],
//         },
//         {
//             name: 'aa2',
//             children: [
//                 {
//                     name: 'aaa21',
//                     children: [],
//                 },
//             ],
//         },
//     ],
// };

// const treeNodes = [
//     {
//         name: 'a',
//         children: [
//             {
//                 name: 'aa1',
//             },
//             {
//                 name: 'aa2',
//                 children: [
//                     {
//                         name: 'aaa1',
//                     },
//                     {
//                         name: 'aaa2',
//                     },
//                     {
//                         name: 'aaa3',
//                         children: [
//                             {
//                                 name: 'aaaa',
//                             },
//                         ],
//                     },
//                 ],
//             },
//         ],
//     },
//     {
//         name: 'b',
//     },
// ];

// // function log (nodes) {
// //     for (const node of nodes) {
// //         console.log(node.name);
// //         node.children && log(node.children);
// //     }
// // }
// 

// function logName (treeNode) {
//     console.log(treeNode.name);
//     for (const node of treeNode.children) {
//         logName(node);
//     }
// }

// logName(tree);

// // 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
// // O(2^N)
// // function fib (n) {
// //     if (n < 2) {
// //         return 1;
// //     }
// //     return fib(n - 1) + fib(n - 2);
// // }

// // console.time('fib');
// // fib(45); // 2 ** 45
// // console.timeEnd('fib');

// // // O(1)
// // function f (n) {
// //     for (let i = 0; i < 1000000000; i++) {

// //     }
// // }

// const data = [
//     {
//         name: 'zhangsan',
//         value: 123,
//         children: [
//             {
//                 name: 'zhangsan',
//                 value: 123,
//             },
//             {
//                 name: 'zhangsan',
//                 value: 123,
//                 children: [
//                     {
//                         name: 'zhangsan',
//                         value: 123,
//                     },
//                 ],
//             },
//             {
//                 name: 'zhangsan',
//                 value: 123,
//             },
//         ],
//     },
//     {
//         name: 'zhangsan',
//         value: 123,
//         children: [
//             {
//                 name: 'zhangsan',
//                 value: 123,
//             },
//         ],
//     },
// ];

// function getSum (data) {
//     let sum = 0; // div.sub-menu
//     for (const item of data) {
//         sum += item.value; // div.sub-menu.appendChild()
//         if (item.children) {
//             sum += getSum(item.children);
//         }
//     }
//     return sum;
// }
